package bszt.ele;

import java.util.Scanner;

public class Code02 {

    /**
     * 问题描述
     * LYA发现了一个神奇的迷宫。这个迷宫是一个n*n的方格阵列，每个方格上都有一个指示牌，上面写着0或1。LYA发明了一种特殊的探险机器人，它会按照以下规则在迷宫中移动：
     * 当机器人到达写有0的方格时，它会向下移动一格
     * 当机器人到达写有1的方格时，它会向右移动一格
     * 如果机器人移动到迷宫边界之外，就会停止移动
     * LYA对这个迷宫非常感兴趣，她想知道在迷宫的不同区域内，机器人的行为会有什么不同。她提出了q个问题，每个问题都是关于迷宫中的一个矩形区域(x_1,y_1)~(x_2,y_2)
     * LYA想知道，如果机器人从(x_1,y_1)开始移动，它会从这个矩形区域的哪个位置离开
     * <p></p>
     * 输入格式
     * 第一行输入一个整数n，表示迷宫的大小
     * 接下来n行，每行输入n个整数a_i，表示迷宫中每个方格上的数字
     * 第n+2行输入一个整数q，表示LYA提出的问题数量
     * 接下来q行，每行输入四个整数x_1,y_1,x_2,y_2，表示LYA询问的矩形区域范围
     * <p></p>
     * 输出格式
     * 对于每个问题，输出一行，包含两个整数，表示机器人离开矩形区域的位置坐标
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] grid = new int[n + 1][n + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                grid[i][j] = sc.nextInt();
            }
        }
        int q = sc.nextInt();
        for (int i = 0; i < q; i++) {
            int x1 = sc.nextInt();
            int y1 = sc.nextInt();
            int x2 = sc.nextInt();
            int y2 = sc.nextInt();
            int[] res = solve(x1, y1, x2, y2, grid);
            System.out.println(res[0] + " " + res[1]);
        }
    }

    public static int[] solve(int x1, int y1, int x2, int y2, int[][] grid) {
        int curX = x1, curY = y1;
        int lastX = 0, lastY = 0;
        while (curX >= x1 && curX <= x2 && curY >= y1 && curY <= y2) {
            lastX = curX;
            lastY = curY;
            if (grid[curX][curY] == 0) {
                curX++;
            } else {
                curY++;
            }
        }
        return new int[]{lastX, lastY};
    }
}
